package com.hengpeng.itfinbase.persist;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Enumerated;

import com.hengpeng.common.web.annotation.HtmlInput;
import com.hengpeng.common.web.annotation.HtmlInputPattern;
import com.hengpeng.common.web.annotation.HtmlInputType;
import com.hengpeng.itfinbase.idAssign.AbstractAssign18IdEntity;
import com.hengpeng.itfinbase.persist.UserInfo.UserLevel;

/**
 * <pre>
 * 投标信息表
 * </pre>
 * 
 * @author chenhui
 * @version 1.0, 2015-5-18
 */
@Entity
public class InvestInfo extends AbstractAssign18IdEntity {
	/**
	 * 
	 */
	private static final long serialVersionUID = -1245287782798105592L;

	/**
	 * 投标用户名
	 */
	@HtmlInput(label = "投标人", maxLength = 50, type = HtmlInputType.TEXT, index = 1, nullable = false)
	private String investUserName;

	/**
	 * 投标用户id
	 */
	@HtmlInput(label = "投标用户id", maxLength = 50, type = HtmlInputType.TEXT, index = 1, nullable = false)
	private Long investUserId;

	@Column(length = 20)
	@Enumerated(javax.persistence.EnumType.STRING)
	@HtmlInput(label = "投标人等级", type = HtmlInputType.SELECT, nullable = true, labelProperty = "text", index = 18)
	private UserLevel userLevel;

	/**
	 * 投标用户托管账户id
	 */
	@HtmlInput(label = "投标用户托管账户id", maxLength = 50, type = HtmlInputType.TEXT, index = 1, nullable = false)
	private String investUserTrustAccountId;

	/**
	 * 汇付冻结标识
	 */
	@HtmlInput(label = "汇付冻结标识", maxLength = 500, type = HtmlInputType.TEXT, index = 1, nullable = false)
	private String freezeTrxId;

	/**
	 * 借款信息id
	 */
	@HtmlInput(label = "借款信息id", maxLength = 50, type = HtmlInputType.TEXT, index = 1, nullable = false)
	private Long borrowInfoId;

	/**
	 * 借款标的名称
	 */
	@HtmlInput(label = "借款标的名称", maxLength = 500, type = HtmlInputType.TEXT, index = 1, nullable = false)
	private String borrowName;

	/**
	 * 投标金额，单位：分
	 */
	@HtmlInput(label = "投标金额(元)", type = HtmlInputType.TEXT, index = 4, pattern = HtmlInputPattern.INT, nullable = false)
	private Long investMoney;

	/**
	 * 投标时间
	 */
	@HtmlInput(label = "投标时间", type = HtmlInputType.TEXT, index = 7, pattern = HtmlInputPattern.INT)
	private Date investTime;

	/**
	 * 投标状态
	 */
	@Column(length = 20)
	@Enumerated(javax.persistence.EnumType.STRING)
	@HtmlInput(label = "状态", type = HtmlInputType.HIDDEN, labelProperty = "text", index = 7)
	private InvestStatus status;

	/**
	 * 更新时间
	 */
	@HtmlInput(label = "更新时间", maxLength = 50, type = HtmlInputType.TEXT, index = 1, nullable = false)
	private Date updateTime;

	/**
	 * 放款时间
	 */
	@HtmlInput(label = "放款时间", maxLength = 50, type = HtmlInputType.TEXT, index = 1, nullable = false)
	private Date loanTime;

	/**
	 * 撤标时间
	 */
	@HtmlInput(label = "撤标时间", maxLength = 50, type = HtmlInputType.TEXT, index = 1, nullable = false)
	private Date cancelTime;

	/**
	 * 创建时间
	 */
	@HtmlInput(label = "创建时间", maxLength = 50, type = HtmlInputType.TEXT, index = 1, nullable = false)
	private Date createTime;

	/**
	 * 流标放款解冻订单号
	 */
	@HtmlInput(label = "流标放款解冻订单号", maxLength = 500, type = HtmlInputType.TEXT, index = 1, nullable = false)
	private String unFreeOderId;

	/**
	 * 投标冻结订单号
	 */
	@HtmlInput(label = "投标冻结订单号", maxLength = 500, type = HtmlInputType.TEXT, index = 1, nullable = false)
	private String freeOderId;

	/**
	 * 当前投标债权人
	 */
	@HtmlInput(label = "当前投标债权人", maxLength = 50, type = HtmlInputType.TEXT, index = 1, nullable = false)
	private Long nowOwnUserId;

	/**
	 * 当前投标债权人姓名
	 */
	@HtmlInput(label = "当前投标债权人姓名", maxLength = 50, type = HtmlInputType.TEXT, index = 1, nullable = false)
	private String nowOwnUserName;

	/**
	 * 当前投标债权人托管账户id
	 */
	@HtmlInput(label = "当前投标债权人托管账户id", maxLength = 50, type = HtmlInputType.TEXT, index = 1, nullable = false)
	private String nowOwnUserTrustAccountId;

	public String getNowOwnUserName() {
		return nowOwnUserName;
	}

	public void setNowOwnUserName(String nowOwnUserName) {
		this.nowOwnUserName = nowOwnUserName;
	}

	public String getNowOwnUserTrustAccountId() {
		return nowOwnUserTrustAccountId;
	}

	public void setNowOwnUserTrustAccountId(String nowOwnUserTrustAccountId) {
		this.nowOwnUserTrustAccountId = nowOwnUserTrustAccountId;
	}

	public Long getNowOwnUserId() {
		return nowOwnUserId;
	}

	public void setNowOwnUserId(Long nowOwnUserId) {
		this.nowOwnUserId = nowOwnUserId;
	}

	public String getFreeOderId() {
		return freeOderId;
	}


	public UserLevel getUserLevel() {
		return userLevel;
	}

	public void setUserLevel(UserLevel userLevel) {
		this.userLevel = userLevel;
	}

	public void setFreeOderId(String freeOderId) {
		this.freeOderId = freeOderId;
	}

	public String getUnFreeOderId() {
		return unFreeOderId;
	}

	public void setUnFreeOderId(String unFreeOderId) {
		this.unFreeOderId = unFreeOderId;
	}

	public Date getLoanTime() {
		return loanTime;
	}

	public void setLoanTime(Date loanTime) {
		this.loanTime = loanTime;
	}

	public String getInvestUserTrustAccountId() {
		return investUserTrustAccountId;
	}

	public void setInvestUserTrustAccountId(String investUserTrustAccountId) {
		this.investUserTrustAccountId = investUserTrustAccountId;
	}

	public Date getCancelTime() {
		return cancelTime;
	}

	public void setCancelTime(Date cancelTime) {
		this.cancelTime = cancelTime;
	}

	public String getInvestUserName() {
		return investUserName;
	}

	public void setInvestUserName(String investUserName) {
		this.investUserName = investUserName;
	}

	public String getBorrowName() {
		return borrowName;
	}

	public void setBorrowName(String borrowName) {
		this.borrowName = borrowName;
	}

	public Long getBorrowInfoId() {
		return borrowInfoId;
	}

	public void setBorrowInfoId(Long borrowInfoId) {
		this.borrowInfoId = borrowInfoId;
	}

	public Long getInvestMoney() {
		return investMoney;
	}

	public void setInvestMoney(Long investMoney) {
		this.investMoney = investMoney;
	}

	public Date getInvestTime() {
		return investTime;
	}

	public void setInvestTime(Date investTime) {
		this.investTime = investTime;
	}

	public InvestStatus getStatus() {
		return status;
	}

	public void setStatus(InvestStatus status) {
		this.status = status;
	}

	public Long getInvestUserId() {
		return investUserId;
	}

	public void setInvestUserId(Long investUserId) {
		this.investUserId = investUserId;
	}

	public String getFreezeTrxId() {
		return freezeTrxId;
	}

	public void setFreezeTrxId(String freezeTrxId) {
		this.freezeTrxId = freezeTrxId;
	}

	/**
	 * <pre>
	 * 投标状态
	 * </pre>
	 * 
	 * @author chenhui
	 * @version 1.0, 2015-5-15
	 */
	public static enum InvestStatus {
		/**
		 * 投标中
		 */
		INVESTING("投标中"),

		/**
		 * 投标成功
		 */
		SUCESS("投标成功"),

		/**
		 * 投标失败
		 */
		FAILURE("投标失败"),

		/**
		 * 撤标中
		 */
		CANCLING("撤标中"),

		/**
		 * 已撤销
		 */
		CANCLED("已撤标"),

		/**
		 * 放款中
		 */
		LOANING("放款中"),

		/**
		 * 已放款(已放款了即还款中)
		 */
		LOANED("已放款"),

		/**
		 * 即结款人已还清该投资人的本息
		 */
		RETURNED("已回款");

		private String text;

		InvestStatus(String text) {
			this.text = text;
		}

		public String getText() {
			return text;
		}

		public void setText(String text) {
			this.text = text;
		}
	}

	public Date getUpdateTime() {
		return updateTime;
	}

	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}

	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
}
